package cn.fl.bizflow.service;

import cmm.comm.facade.framework.dto.SysDictionaryDTO;
import cmm.mid.core.framework.page.DataResultVO;
import cmm.mid.core.framework.page.Pager;
import cn.cmm.base.framework.exception.BaseException;
import cn.fl.bizflow.vo.SysBizFlowRlVO;
import fl.spl.facade.bizflow.condition.SysBizFlowRlQC;

import java.util.List;
import java.util.Map;

/**
 * @Description: 业务数据与流程权限关系表 客户端服务层接口
 * @Description: 持久层方法名称前缀：新增：insert* 删除：delete* 修改：update* 批量：batch* 查询对象：select* get* find* 查询集合：select*
 * @Description: 业务层方法名称前缀：新增：add* 删除：remove* 修改：modify* 查询对象：select* get* 批量：batch* 查询集合：search*
 */
public interface ISysBizFlowRlService {
	
	/**
	 * 获取唯一对象
	 * @param id 主键
	 * @return 对象DTO
	 */
	public SysBizFlowRlVO selectById(Long id)throws BaseException;
	
	/**
	 * 新增
	 * @param entity
	 * @return
	 */
    public Long add(SysBizFlowRlVO entity) throws BaseException;
    
    /**
     * 批量新增
     * @param list
     * @return
     * @throws BaseException
     */
    public boolean batchAdd(List<SysBizFlowRlVO> list)throws BaseException;

    /**
     * 删除
     * @param id
     * @return
     */
    public boolean removeById(Long id)throws BaseException;
    
    /**
     * 删除
     * @param ids
     * @return
     */
    public boolean removeByIds(List<Long> ids)throws BaseException;

    /**
     * 修改
     * @param entity
     * @return
     */
    public boolean modify(SysBizFlowRlVO entity)throws BaseException;

    /**
     * 分页查询所有
     * @param page
     * @return
     */
    public Pager searchListPage(Pager page)throws BaseException;
    
    /**
     * 不分页查询所有
     * @param qc
     * @return
     * @throws BaseException
     */
    public List<SysBizFlowRlVO> searchList(SysBizFlowRlQC qc)throws BaseException;
    /**
     * 保存并申请流程
     * @param list
     * @return
     * @throws BaseException
     * modify by hewangze 2019-04-09 14:36:54
     * num1->支持不上牌资产数量
     * num2->超期30天未上牌车辆数量
	 * version 1.0.0
     */
	public DataResultVO addAndApply(List<SysBizFlowRlVO> list,Long splId,Integer num1, Integer num2)throws BaseException;
	/**
	 * 插入流程中的数据
	 * @param list
	 * @return
	 * @throws BaseException
	 */
	public boolean batchAddForFlow(List<SysBizFlowRlVO> list)throws BaseException;

	/**
	 * 保存并申请流程权限变更流程
	 * @param buOrgCdFlowRlMap 事业部与经销商流程关系信息 MAP
	 * @param splId 经销商id
	 * @param flowNoAndSysDicMap 权限流程编号及数据字典配置MAP
	 * @return
	 * @throws BaseException
	 * @author create by jiangzg
	 * @date  2019-04-09 14:36:54
	 * num1->支持不上牌资产数量
	 * num2->超期30天未上牌车辆数量
	 * version 2.0.0
	 */
	public DataResultVO addAndApplySplBizFlowRl(Map<String,List<SysBizFlowRlVO>> buOrgCdFlowRlMap, Long splId, Map<String, SysDictionaryDTO> flowNoAndSysDicMap,String currBuOrgCd)throws BaseException;


	/**
	 * 流程中批量添加流程权限记录
	 * @param buOrgCdSysBizFlowRlVOMap           经销商流程权限关系list
	 * @param opBuOrgCds         操作事业部CODE list
	 * @param opSysCd           操作系统编码
	 * @param userNm            操作人名称
	 * @return
	 * @throws BaseException
	 */
	public boolean batchAddBizFlowRlVOForFlow(Map<String,List<SysBizFlowRlVO>> buOrgCdSysBizFlowRlVOMap, List<String> opBuOrgCds, String opSysCd, String userNm) throws BaseException;

	/**
	 * 通过事业部系统CODE批量新增业务数据与流程权限关系
	 * @param   buOrgCdSysBizFLowRlsMap     事业部CODE与经销商流程权限关系list MAP
	 * @param   opBuOrgCdList           操作事业部CODE List
	 * @param   opSysCd                 操作系统编码
	 * @param   opUserNm                操作人名称
	 * @return
	 * @throws  BaseException
	 * @author  jiangzg
	 * @date    2019-06-18 10:16:07
	 */
	public boolean batchAddBizFlowRlByBuOrgCd(Map<String,List<SysBizFlowRlVO>> buOrgCdSysBizFLowRlsMap, List<String> opBuOrgCdList, String opSysCd, String opUserNm) throws BaseException;


}
